From afc19eb4a7e4ec4420dc202e0da0fe2c4d1ca7c2 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 24 Sep 2009 16:42:52 +0200 Subject: [PATCH] Send expose events on foreign windows F-Spot needs this as it draws on a foreign (screensaver) window, which used to work. I believe this is safe, because in all typical cases the expose mask will not be set, so we won't do anything, and its what we used to do. --- gdk/gdkwindow.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 500bf6524d..3231deac6d 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -5023,12 +5023,17 @@ _gdk_window_process_updates_recurse (GdkWindow *window, g_object_unref (window); } - else if (private->bg_pixmap != GDK_NO_BG) + else if (private->bg_pixmap != GDK_NO_BG && + private->window_type != GDK_WINDOW_FOREIGN) { /* No exposure mask set, so nothing will be drawn, the * app relies on the background being what it specified * for the window. So, we need to clear this manually. * + * For foreign windows if expose is not set that generally + * means some other client paints them, so don't clear + * there. + * * We use begin/end_paint around the clear so that we can * piggyback on the implicit paint */ @@ -5066,8 +5071,7 @@ gdk_window_process_updates_internal (GdkWindow *window) GdkRegion *update_area = private->update_area; private->update_area = NULL; - if (_gdk_event_func && gdk_window_is_viewable (window) && - private->window_type != GDK_WINDOW_FOREIGN) + if (_gdk_event_func && gdk_window_is_viewable (window)) { GdkRegion *expose_region; gboolean end_implicit; -- 2.30.2